function formatTime(date) {
  var year = date.getFullYear()
  var month = date.getMonth() + 1
  var day = date.getDate()

  var hour = date.getHours()
  var minute = date.getMinutes()
  var second = date.getSeconds()
  
  return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}
/**
 * 获取当前日期字符串 yyyy-mm-dd
 */
function getCurrentDate() {
  var date = new Date();
  var mon = date.getMonth() + 1;
  var day = date.getDate();
  return date.getFullYear() + "-" + (mon < 10 ? "0" + mon : mon) + "-" + (day < 10 ? "0" + day : day);
}

function formatNumber(n) {
  n = n.toString()
  return n[1] ? n : '0' + n
}
/**
 * 根据订单状态码获取对应状态
 */
function orderStateConvert(stateCode, type) {
  if (type == 1) {//帮带物订单  B端
    switch (stateCode) {
      case '0'://发布订单,暂无人接单  B端无该订单
        return '';
      case '1'://B申请接单,等待C同意  取消带物(脱离次订单)
        return '已发起';
      case '2'://C同意让B带物,此时正式建立带物关系  取消带物(进入3)  (取消申请被拒绝过一次后可以联系客服)
        return '已同意';
      case '3'://建立带物关系后B申请取消带物,C同意后订单回到0状态,B端看不到该订单  联系客服
        return '待取消';
      case '4'://完成订单  交易完成(流程结束)     给B打分
        return '已完成';
      case '5'://订单被C关闭(订单不会重新释放到市场)  (不可操作)
        return '已关闭';
      case '6'://C不想继续订单了,申请关闭订单(正常状态等价于2) 同意则进入状态5(关闭),拒绝则进入状态2
        return '已同意'
      default:
        return "未知"

    }
  } else {//被带订单
    switch (stateCode) {
      case '0':
        return '待抢单'
      case '1':
        return '待同意';
      case '2':
        return '待收货';
      case '3'://此时C如果拒绝B的取消申请,订单将回退到状态2,B可以联系客服介入,同意则进入状态6
        return '待收货';
      case '4'://C已经确认收货
        return '已完成';
      case '5'://因为C主动关闭的订单(整个订单状态结束)
        return '已关闭';
      case '6': ''//待收货状态C不想带物了 ,申请关闭订单,等待C同意
        return '待关闭'
      default:
        return "未知"
    }
  }
}

/**
 * 自动获取定位信息
 */
function getLocation(that, qqmapsdk) {
  if (wx.getSystemInfoSync().locationEnabled == false) {
    wx.showModal({
      title: '提示',
      content: '请打开手机定位',
      showCancel: false
    })
    return;
  }
  if (wx.getSetting) {
    wx.getSetting({
      success: (res) => {
        if (res.authSetting['scope.userLocation'] != undefined && res.authSetting['scope.userLocation'] != true) {
          wx.showModal({
            title: '请求授权当前位置',
            content: '需要获取您的地理位置，请确认授权',
            success: function (res) {
              if (res.confirm) {
                wx.openSetting({})
              } else if (res.cancel) {
                wx.showModal({
                  title: '提示',
                  content: '授权失败',
                  showCancel: false
                })
                wx.removeStorage('tempAddrInfo_dingwei');
                return;
              }
            }
          })
        } else {
          wx.getLocation({ //授权获取当前位置信息
            type: 'gcj02',
            success(res) {
              qqmapsdk_dizhi(that, qqmapsdk, res.latitude, res.longitude);
            },
            fail(res) { //请求频率第一次返回当前未知信息，剩余返回第一次位置信息
              wx.showModal({
                title: '提示',
                content: '无法获取您的位置信息,请到设置—>微信—>位置中检查是否打开定位服务并允许访问您的定位。并重新进入小程序',
              })
            }
          })
        }
      }
    })
  } else {
    // 如果希望用户在最新版本的客户端上体验您的小程序，可以这样子提示
    wx.showModal({
      title: '提示',
      content: '当前微信版本过低，无法使用该功能，请升级到最新微信版本后重试。'
    })
    return;
  }
}
/**
 * 地址解析
 */
function qqmapsdk_dizhi(that, qqmapsdk, latitude, longitude) {
  qqmapsdk.reverseGeocoder({
    location: latitude + ',' + longitude,
    success: function (v) {
      var tempAddrInfo_dingwei = wx.getStorageSync('tempAddrInfo_dingwei') || {};
      var d_quyu = v.result.address_component.province + v.result.address_component.city + v.result.address_component.district
      tempAddrInfo_dingwei.province = v.result.address_component.province; //省份
      tempAddrInfo_dingwei.city = v.result.address_component.city; //城市
      tempAddrInfo_dingwei.district = v.result.address_component.district; //区
      tempAddrInfo_dingwei.address = v.result.address; //详细地址
      tempAddrInfo_dingwei.address_dquyu = d_quyu; //省市区
      tempAddrInfo_dingwei.latitude = v.result.location.lat; //坐标
      tempAddrInfo_dingwei.longitude = v.result.location.lng; //坐标
      wx.setStorageSync('tempAddrInfo_dingwei', tempAddrInfo_dingwei);
      console.log(tempAddrInfo_dingwei)
      //刷新数据
      // that.goRefreshDatas();
    },
    fail: function (v) {},
  })
}


/**
 * 防抖函数
 */
/*函数防抖 链接：https://juejin.cn/post/6995454183239319582*/
function debounce(fn, delay, immediate=false) {
  // 1.定义一个定时器, 保存上一次的定时器
  let timer = null
  let isInvoke = false

  // 2.真正执行的函数
  const _debounce = function (...args) {
      // 取消上一次的定时器
      if (timer) clearTimeout(timer)

      // 判断是否需要立即执行
      if (immediate && !isInvoke) {
          fn.apply(this, args)
          isInvoke = true
      } else {
          // 延迟执行
          timer = setTimeout(() => {
              // 外部传入的真正要执行的函数
              fn.apply(this, args)
              isInvoke = false
              timer = null
          }, delay)
      }
  }

  // 封装取消功能
  _debounce.cancel = function () {
      if (timer) clearTimeout(timer)
      timer = null
      isInvoke = false
  }

  return _debounce
}

function test(){
  console.log("jlajsdfkljj")
}

module.exports = {
  formatTime: formatTime,
  getCurrentDate: getCurrentDate,
  orderStateConvert: orderStateConvert,
  getLocation: getLocation,

  debounce: debounce,
  test: test,
}
